# 目前接触到了列表、元组、字符串三个数据容器了。基本满足大多数的使用
# 场景为何又需要学习新的集合类型呢?
# 通过特性来分析:
# 列表list可修改、支持重复元素且有序
# 元组tuple、字符串str不可修改、支持重复元素且有序
# 和列表、元组、字符串等定义基本相同:
# 列表使用:[]
# 元组使用:()
# 字符串使用:""
# 集合使用:{}
# 基本语法:
#  # 定义集合字面量
# {元素，元素，......，元素}
# # 定义集合变量
# 变量名称 = {元素，元素，......，元素}
# # ❗定义空集合--❗🐖：这里用的是括号
# 变量名称 = set()

#定义集合
# my_friend={"林城斌",'林🐖🐖',21,'林🐖🐖',"林城斌",'林🐖🐖',21,18,"林🐖🐖"}
# my_friend_empty=set()
# print(f'my_friend都内容是:{my_friend},类型是{type(my_friend)}')
# print(f'my_friend_empty都内容是:{my_friend_empty},类型是{type(my_friend_empty)}')
# 集合的常用操作- 修改
# 首先，因为集合是无序的，所以集合❗不支持:下标索引访问
# 但是集合和列表一样，是允许修改的，所以我们来看看集合的修改方法
# 添加新元素
# 语法:集合.add(元素)。将指定元素，添加到集合内
# 结果:集合本身被修改，添加了新元素
# set={"hello","world"}
# print(type(set))
# set.add("pig")
# print(set)

# 移除元素
# 语法:集合.remove(元素)，将指定元素，从集合内移除
# 结果:集合本身被修改，移除了元素
# set={"hello","world"}
# print(type(set))
# set.remove("hello")
# print(set)

# #随机取出一个元素
# my_set={"lin pig pig","pig pig lin","kawayi"}
# element=my_set.pop()
# print(f"集合被任意取出的元素是{element}，取出后集合my_set变成{my_set}")

# #清空集合-clear
# my_set={"lin pig pig","pig pig lin","kawayi"}
# element=my_set.clear()
# print(f"集合被清空啦，结果是{my_set}")


# 🐖集合的常用操作- 修改
# 取出2个集合的差集.
# 语法: 集合1.difference(集合2)
# 功能: 取出集合1和集合2的差集 (集合1有而集合2没有的)
# 结果: 得到一个新集合，集合1和集合2不变
# #取两个集合的差集
# set1={1,2,3}
# set2={1,3,5,6}
# set3=set1.difference(set2)
# print(f"取出差集后的结果是{set3}")#👉结果是{2}
# print(f"取差集后，原有set1的内容set1：{set1}")
# print(f"取差集后，原有set2的内容set2：{set2}")

# 消除2个集合的差集
# 语法: 集合1.difference_update(集合2)
# 功能:对比集合1和集合2，在集合1内，删除和集合2相同的元素
# # 结果: 集合1被修改，集合2不变
# set1={1,2,3}
# set2={1,5,6}
# set1.difference_update(set2)
# print(set1)
# print(set2)

# 2个集合合并.
# 语法: 集合1.union(集合2)
# 功能: 将集合1和集合2组合成新集合
# 结果: 得到新集合，集合1和集合2不变
# set1={1,2,3}
# set2={1,5,6}
# set3=set1.union(set2)
# print(set3)
# print(set2)
# print(set1)
#
# # 统计集合元素数量Len()
# set={1,2,3,4,5,1,2,3,4,5}
# num=len(set)
# print(f"set的长度是{num}")#因为集合不能重复，所以重复元素不计入长度内

#集合的遍历
#集合不支持下标索引，不能用while循环
#可以用for循环
# set1 = {1,2,3,4,5}
# for element in set1:
#     print(f"集合的元素有: {element}")#for循环勿忘缩进

# 操作
# 集合.add(元素)          集合内添加一个元素
# 集合.remove(元素)       移除集合内指定的元素
# 集合.pop()             从集合中随机取出一个元素
# 集合.clear()           将集合清空
# 集合1.difference(集合2) 得到一个新集合，内含2个集合的差集原有的2个集合内容不变
# 集合1.difference update(集合2) 在集合1中，删除集合2中存在的元素集合1被修改，集合2不变
# 集合1.union(集合2)      得到1个新集合，内含2个集合的全部元素原有的2个集合内容不变
# len(集合)              得到一个整数，记录了集合的元素数量
#
# 集合的特点:
# 可以容纳多个数据
# 可以容纳不同类型的数据 (混装)
# 数据是无序存储的 (不支持下标索引)unorderd
# 不允许重复数据存在
# 可以修改(增加或删除元素等)
# 支持for循环

# 信息去重
# 有如下列表对象:
# my_list=[黑马程序员，传智播客，黑马程序员，传智播客，itheima，itcastitheima，itcast]
# 请:
# 定义一个空集合。
# 通过for循环遍历列表。
# 在for循环中将列表的元素添加至集合.
# 最终得到元素去重后的集合对象，并打印输出
my_list=['黑马程序员','传智播客','黑马程序员','传智播客',"itheima","itcast","itheima"]
#定义一个空集合
set1=set()
#进行for循环遍历列表
for element in my_list:
    #在for循环中将列表的元素添加至集合
    set1.add(element)
#最终得到元素去重后的集合对象，并打印输出
print(f"列表的内容是：{set1}")
print(f"通过for循环后，得到的集合对象是：{set1}")











